/**
 * 392. is subsequence
 * https://leetcode.com/problems/is-subsequence/
 */
class IsSubsequence {

    /**
     * 方法：双指针法
     *
     * 逻辑:
     * 使用两个指针分别指向字符串s和t的起始位置。遍历字符串t，当t中的字符与s中的字符相同时，
     * 移动s的指针。如果s的指针移动到了s的末尾，说明s是t的子序列，返回true。否则，遍历结束后返回false。
     *
     * Args:
     * s (String): 可能是子序列的字符串。
     * t (String): 目标字符串。
     *
     * Returns:
     * boolean: 如果s是t的子序列，返回true；否则返回false。
     *
     * Time: 
     * O(n)，其中n是字符串t的长度。每个字符在t中最多被访问一次。
     *
     * Space: 
     * O(1)，只使用了常数级的额外空间。
     */
    public boolean isSubsequence(String s, String t) {
        if(s.length() == 0) return true;
        for(int i = 0, j = 0; j < t.length(); j++){
            if(t.charAt(j) == s.charAt(i)){
                if(++i == s.length()){
                    return true;
                }
            }
        }
        return false;
    }
}